1
Des prompts aux pipelines : Aperçu de l'orchestration avec LangChain
AI010Lesson 6
00:00

Des prompts aux pipelines

L'évolution de l'interaction avec les modèles linguistiques

Dans les leçons précédentes, nous avons porté notre attention sur les interactions à base de prompt unique. Toutefois, les applications du monde réel exigent bien plus qu'une simple question-réponse ponctuelle. Pour concevoir des systèmes d'IA évolutifs, nous devons passer à l'orchestration. Cela consiste à relier plusieurs appels au modèle linguistique, à implémenter une logique de branchement basée sur l'entrée utilisateur, et à permettre au modèle d'interagir avec des données externes.

Les briques fondamentales de l'orchestration

  • LLMChain: La pièce maîtresse. Il combine un modèle de prompt avec un modèle linguistique.
  • Chaînes séquentielles: Elles vous permettent de créer un flux de travail en plusieurs étapes où la sortie d'une étape devient l'entrée de la suivante.
  • Chaînes de routage: Elles agissent comme des "contrôleurs de trafic", utilisant un modèle linguistique pour décider quelle sous-chaîne spécialisée doit traiter une requête spécifique (par exemple, envoyer une question de mathématiques à une « chaîne Math » et une question d'histoire à une « chaîne Histoire »).

Le principe fondamental : la règle de la chaîne

Les chaînes permettent de combiner plusieurs composants — modèles, prompts et mémoire — en une seule application cohérente. Cette modularité garantit que les tâches complexes peuvent être décomposées en étapes gérables et facilement déboguées.

Astuce pro : Débogage des pipelines
Lorsque vos pipelines deviennent complexes, utilisez langchain.debug = True. Cette « vision X-ray » vous permet de voir les prompts exacts envoyés et les sorties brutes reçues en arrière-plan à chaque étape de la chaîne.
sequential_chain.py
TERMINALbash — 80x24
> Ready. Click "Run" to execute.
>
Question 1
In LangChain, what is the primary difference between a SimpleSequentialChain and a standard SequentialChain?
SimpleSequentialChain supports multiple input variables, while SequentialChain does not.
SimpleSequentialChain only supports a single input and single output flowing between steps.
Only SequentialChain can be used with ChatOpenAI models.
Challenge: Library Support Router
Design a routing mechanism for a specialized bot.
You are building a support bot for a library.

Define the logic for a RouterChain that distinguishes between "Book Recommendations" and "Operating Hours."
Step 1
Create two prompt templates: one for book suggestions and one for library schedule info.
Solution:
book_template = """You are a librarian. Recommend books based on: {input}"""
schedule_template = """You are a receptionist. Answer hours queries: {input}"""

prompt_infos = [
    {"name": "books", "description": "Good for recommending books", "prompt_template": book_template},
    {"name": "schedule", "description": "Good for answering operating hours", "prompt_template": schedule_template}
]
Step 2
Define the router_template to guide the LLM on how to classify the user's intent, and initialize the chain.
Solution:
router_template = MULTI_PROMPT_ROUTER_TEMPLATE.format(
    destinations=destinations_str
)
router_prompt = PromptTemplate(
    template=router_template,
    input_variables=["input"],
    output_parser=RouterOutputParser(),
)
router_chain = LLMRouterChain.from_llm(llm, router_prompt)

chain = MultiPromptChain(
    router_chain=router_chain,
    destination_chains=destination_chains,
    default_chain=default_chain,
    verbose=True
)